package controller;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class MyController {

	@RequestMapping("/hello.do")
	public String hello() {
		System.out.println("hello()");
		Integer.parseInt("123a"); // 会抛出运行时异常
//		这个异常会先抛给dispacherServlet处理，如果diapacherServlet没有对这种错误
//	进行处理，那么dispacherServlet就会将这个异常抛给用户
		return "jsp/hello";
	}
	
	@RequestMapping("/demo/hello.do")
	public String hello2() {
		System.out.println("hello2()");
		String str = "abc";
		str.charAt(10);
		return "jsp/hello";
	}
	
	@ExceptionHandler
//	异常处理方法：用来处理其它方法所抛出的异常的
//		形式参数e：异常对象
	public String execute(Exception e, HttpServletRequest request) {
//		依据异常类型，分别做不同的处理
		if(e instanceof NumberFormatException) {
//			异常处理
			request.setAttribute("errorMsg", "你好，请输入合法的数字");
			return "jsp/error3";
		} else if(e instanceof StringIndexOutOfBoundsException) {
			request.setAttribute("errorMsg", "下标越界");
			return "jsp/error3";
		}
		return "jpp/system_error";
	}
	
}
